package com.wjm.blog.system.api;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.wjm.blog.common.base.response.Result;
import com.wjm.blog.system.fallback.SysRoleFallback;
import com.wjm.blog.system.vo.request.SysRoleQueryVo;
import com.wjm.blog.system.vo.request.SysRoleSaveVo;
import com.wjm.blog.system.vo.response.SysRoleDetailVo;
import com.wjm.blog.system.vo.response.SysRoleListVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

/**
 * 角色信息表API
 *
 * @author wjm
 * @version 1.0
 * @date 2023-10-18T14:34:39.274
 */
@FeignClient(value = "system-api", path = "/service/101/api/v1.0", fallback = SysRoleFallback.class)
public interface SysRoleApi {
    /**
     * 角色信息表分页查询
     *
     * @param queryVo 查询接口
     * @return 角色信息表分页列表
     * @throws Exception 异常信息
     * @author wjm
     * @version 1.0
     * @date 2023-10-18T14:34:39.274
     */
    @GetMapping("/sysRoles/page")
    Result<IPage<SysRoleListVo>> page(@ModelAttribute SysRoleQueryVo queryVo) throws Exception;

    /**
     * 角色信息表列表查询
     *
     * @param queryVo 查询接口
     * @return 角色信息表列表
     * @throws Exception 异常信息
     * @author wjm
     * @version 1.0
     * @date 2023-10-18T14:34:39.274
     */
    @GetMapping("/sysRoles")
    Result<List<SysRoleListVo>> list(@ModelAttribute SysRoleQueryVo queryVo) throws Exception;

    /**
     * 角色信息表详情查询
     *
     * @param id 主键ID
     * @return 角色信息表详情
     * @throws Exception 异常信息
     * @author wjm
     * @version 1.0
     * @date 2023-10-18T14:34:39.274
     */
    @GetMapping("/sysRoles/{id}")
    Result<SysRoleDetailVo> get(@PathVariable Long id) throws Exception;

    /**
     * 角色信息表新增
     *
     * @param saveVo 角色信息表保存VO
     * @return 操作结果
     * @throws Exception 异常信息
     * @author wjm
     * @version 1.0
     * @date 2023-10-18T14:34:39.274
     */
    @PostMapping("/sysRole")
    Result insert(@RequestBody @Valid SysRoleSaveVo saveVo) throws Exception;

    /**
     * 角色信息表修改
     *
     * @param id     主键ID
     * @param saveVo 角色信息表保存VO
     * @return 操作结果
     * @throws Exception 异常信息
     * @author wjm
     * @version 1.0
     * @date 2023-10-18T14:34:39.274
     */
    @PutMapping("/sysRole/{id}")
    Result update(@PathVariable Long id, @RequestBody @Valid SysRoleSaveVo saveVo) throws Exception;

    /**
     * 角色信息表作废(批量)
     *
     * @param ids 主键ID集合
     * @return 操作结果
     * @throws Exception 异常信息
     * @author wjm
     * @version 1.0
     * @date 2023-10-18T14:34:39.274
     */
    @DeleteMapping("/sysRoles/{ids}")
    Result invalid(@PathVariable List<Long> ids) throws Exception;
}
